package cn.iocoder.yudao.module.eval;

import cn.iocoder.yudao.module.eval.controller.admin.major.vo.MajorImportExcelVO;
import cn.idev.excel.EasyExcel;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.event.AnalysisEventListener;
import cn.idev.excel.read.metadata.ReadSheet;

import java.io.File;
import java.util.List;
import java.util.Map;

public class TestExcelRead {
    
    public static void main(String[] args) {
        // 注意：这个测试类仅用于本地测试，不会在实际应用中运行
        // 请将实际的Excel文件路径替换下面的路径
        String filePath = "d:/test/专业管理导入模板.xls"; // 替换为实际的Excel文件路径
        
        try {
            // 方法1：使用EasyExcel读取，添加表头监听器
            System.out.println("=== 方法1：使用EasyExcel读取 ===");
            List<MajorImportExcelVO> list1 = EasyExcel.read(filePath)
                    .head(MajorImportExcelVO.class)
                    .registerReadListener(new AnalysisEventListener<MajorImportExcelVO>() {
                        @Override
                        public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
                            System.out.println("表头Map: " + headMap);
                            // 打印每个表头的详细信息
                            for (Map.Entry<Integer, String> entry : headMap.entrySet()) {
                                System.out.println("  Column " + entry.getKey() + ": '" + entry.getValue() + "'");
                            }
                        }
                        
                        @Override
                        public void invoke(MajorImportExcelVO data, AnalysisContext context) {
                            // 不处理数据，只分析表头
                        }
                        
                        @Override
                        public void doAfterAllAnalysed(AnalysisContext context) {
                            System.out.println("所有分析完成");
                        }
                    })
                    .sheet()
                    .doReadSync();
            System.out.println("Method 1 - Read " + list1.size() + " records");
            
            // 打印读取到的数据
            for (MajorImportExcelVO vo : list1) {
                System.out.println(vo);
            }
            
            // 方法2：直接读取表头
            System.out.println("\n=== 方法2：直接读取表头 ===");
            EasyExcel.read(filePath)
                    .head(MajorImportExcelVO.class)
                    .registerReadListener(new AnalysisEventListener<MajorImportExcelVO>() {
                        @Override
                        public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
                            System.out.println("表头Map: " + headMap);
                            // 打印每个表头的详细信息
                            for (Map.Entry<Integer, String> entry : headMap.entrySet()) {
                                System.out.println("  Column " + entry.getKey() + ": '" + entry.getValue() + "'");
                            }
                        }
                        
                        @Override
                        public void invoke(MajorImportExcelVO data, AnalysisContext context) {
                            System.out.println("数据行: " + data);
                        }
                        
                        @Override
                        public void doAfterAllAnalysed(AnalysisContext context) {
                            System.out.println("所有分析完成");
                        }
                    })
                    .sheet()
                    .doRead();
                    
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}